hysop.operator.adapt_timestep module

Update time-step, depending on the flow field. See adaptive time_step for details.

class hysop.operator.adapt_timestep.AdaptiveTimeStep(dt, min_dt=None, max_dt=None, dt_coeff=None, equivalent_CFL=False, base_kwds=None, start_time=None, **kwds)[source]

Bases: ComputationalGraphNodeGenerator

The adaptative Time Step is computed according to the following expression :

dt = max(min(max_dt, dt_criterias), min_dt)

Initialize an AdaptiveTimeStep operator.

Parameters:
  • dt (hysop.parameter.scalar_parameter.ScalarParameter) – The parameter that will be updated.

  • min_dt (double, optional) – Minimum value allowed for time step.

  • max_dt (double, optional) – Maximum value allowed for time step.

  • dt_coeff (double, optional) – Constant coefficient applied to resulting dt after resolving min and max values.

  • start_time (double, optional) – Simulation time when starting to adapt timestep

  • param_name (str, optional) – Output dt parameter name (default is ‘dt’).

  • base_kwds (dict) – Base kwds of this class.

  • kwds – Additional keywords arguments that will be passed to MergeTimeStepCriterias.

Notes

  • This operator has no effect on input variables.

push_advection_criteria(lcfl, criteria, Finf=None, gradFinf=None, name=None, pretty_name=None, param_name=None, param_pretty_name=None, parameter=None, quiet=False, dtype=None, **kwds)[source]

See hysop.operator.adapt_timpestep.AdvectionTimestepCriteria.

push_cfl_criteria(cfl, Fmin=None, Fmax=None, Finf=None, dx=None, name=None, pretty_name=None, param_name=None, param_pretty_name=None, parameter=None, quiet=False, relative_velocities=None, equivalent_CFL=None, dtype=None, **kwds)[source]

See hysop.operator.adapt_timpestep.CflTimestepCriteria.

push_cst_criteria(cst, Finf=None, name=None, pretty_name=None, param_name=None, param_pretty_name=None, parameter=None, quiet=False, dtype=None, **kwds)[source]
push_lcfl_criteria(*args, **kwds)[source]

See hysop.operator.adapt_timpestep.AdvectionTimestepCriteria.

push_stretching_criteria(criteria, gradFinf, cst=1.0, name=None, pretty_name=None, parameter=None, quiet=False, dtype=None, **kwds)[source]

See hysop.operator.adapt_timpestep.StretchingTimestepCriteria.

class hysop.operator.adapt_timestep.AdvectionTimestepCriteria(lcfl, parameter, criteria, Finf=None, gradFinf=None, name=None, pretty_name=None, **kwds)[source]

Bases: TimestepCriteria

Initialize a AdvectionTimestepCriteria.

Compute a timestep criteria for advection:

W_INF: dt = lcfl / Max_i(|Wi|) GRAD_U: dt = lcfl / Max_i(|dUi/dXi|) DEFORMATION: dt = lcfl / Max_i( Sum_j(|Sij|) )

where Sij is the deformation tensor Sij = (dUi/dXj + dUj/dXi)/2

where |dUi/dXj| = |gradF|_inf

|Wi| = |F|_inf

Parameters:
  • lcfl (float) – Lagrangian CFL constant.

  • Finf (TensorParameter, optional) – A tensor parameter that contains |W|inf for every components. of the vorticity.

  • gradFinf (TensorParameter) – A tensor parameter that contains |gradF|inf for every components in every directions, ie. the inf. norm of the gradient of velocity.

  • parameter (ScalarParameter) – The output parameter that will store the computed timestep.

  • criteria (AdvectionCriteria) – The chosen criteria. Currently only W_INF, GRAD_U, and DEFORMATION is supported.

  • kwds (dict) – Base class arguments.

compute_criteria(**kwds)[source]
class hysop.operator.adapt_timestep.CflTimestepCriteria(cfl, parameter, Finf=None, Fmin=None, Fmax=None, dx=None, name=None, pretty_name=None, relative_velocities=None, **kwds)[source]

Bases: TimestepCriteria

Initialize a CflTimestepCriteria.

Compute dt = cfl * Min_i(dx[i] / F[i].inf)

cfl = (Vinf/dx)*dt

Parameters:
  • cfl (float) – CFL value used to compute timestep.

  • Finf (TensorParameter) –

    A tensor parameter that contains Finf for every components. Can be specified instead of Fmin and Fmax:

    *Fmin will be set to -Finf *Fmax will be set to +Finf

  • Fmin (TensorParameter) – A tensor parameter that contains Fmin for every components.

  • Fmax (TensorParameter) – A tensor parameter that contains Fmax for every components.

  • parameter (ScalarParameter) – The output parameter that will store the computed timestep.

  • dx (tuple of float) – Space discretization, should be of size F.nb_components. If not given, will be extracted from Finf on setup.

  • relative_velocities (array like of relative velocities, optional) – Specify relative velocities.

  • kwds (dict) – Base class arguments.

compute_cfl(dt)[source]
compute_criteria(**kwds)[source]
setup(**kwds)[source]

Setup temporary buffer that have been requested in get_work_properties(). This function may be used to execute post allocation routines. This sets self.ready flag to True. Once this flag is set one may call ComputationalGraphNode.apply() and ComputationalGraphNode.finalize().

Automatically honour temporary field memory requests.

classmethod supports_mpi()[source]

Return True if this operator was implemented to support multiple mpi processes.

class hysop.operator.adapt_timestep.ConstantTimestepCriteria(cst, parameter, Finf, name=None, pretty_name=None, **kwds)[source]

Bases: TimestepCriteria

Initialize a ConstantTimestepCriteria.

Compute a timestep criteria for an arbitrary field F.

dt = cst / Max_i(|Fi|inf)

where i in [0, F.nb_components-1]

Parameters:
  • cst (float or array-like of float) – Constraint constant (per component, same shape as Finf).

  • Finf (ScalarParameter or TensorParameter) – A tensor parameter that contains |F|inf for every considered components.

  • parameter (ScalarParameter) – The output parameter that will store the computed timestep.

  • kwds (dict) – Base class arguments.

compute_criteria(**kwds)[source]
class hysop.operator.adapt_timestep.MergeTimeStepCriterias(parameter, criterias, equivalent_CFL=None, cfl_criteria=None, start_time=None, **kwds)[source]

Bases: TimestepCriteria

Initialize an AdaptiveTimeStep operator.

Parameters:
  • parameter (ScalarParameter) – Timestep parameter that will be updated.

  • input_params (set) – Input parameters used to compute criteria.

  • output_params (set) – Output parameters used to compute criteria.

  • min_dt (float, optional) – Minimum value allowed for time step, defaults to 0.

  • max_dt (float, optional) – Maximum value allowed for time step, defaults to 1e8.

  • dt_coeff (float, optional) – Constant coefficient applied to resulting dt before resolving min and max values. Defaults to 1.

  • kwds (dict) – Base class arguments.

apply(simulation, **kwds)[source]

Abstract method that should be implemented. Applies this node (operator, computational graph operator…).

compute_criteria(**kwds)[source]
class hysop.operator.adapt_timestep.StretchingTimestepCriteria(gradFinf, parameter, cst=1.0, criteria=GRAD_U(0), name=None, pretty_name=None, **kwds)[source]

Bases: TimestepCriteria

Initialize a StretchingTimestepCriteria.

Compute dt = cst / Max_i( Sum_j( |dFi/dXj| ) )

where |dFi/dXj| = |gradF|_inf_ij

ie. dt = cst / np.max( gradFinf.sum(axis=1) )

Parameters:
  • cst (float) – Factor used to compute timestep.

  • gradFinf (TensorParameter) – A tensor parameter that contains |gradF|inf for every components in every directions.

  • parameter (ScalarParameter) – The output parameter that will store the computed timestep.

  • criteria (StretchingCriteria) – The chosen criteria. Currently only StretchingCriteria.GRAD_U is supported.

  • kwds (dict) – Base class arguments.

compute_criteria(**kwds)[source]
class hysop.operator.adapt_timestep.TimestepCriteria(parameter, input_params, output_params, dt_coeff=None, min_dt=None, max_dt=None, **kwds)[source]

Bases: HostOperatorBase

Initialize an AdaptiveTimeStep operator.

Parameters:
  • parameter (ScalarParameter) – Timestep parameter that will be updated.

  • input_params (set) – Input parameters used to compute criteria.

  • output_params (set) – Output parameters used to compute criteria.

  • min_dt (float, optional) – Minimum value allowed for time step, defaults to 0.

  • max_dt (float, optional) – Maximum value allowed for time step, defaults to 1e8.

  • dt_coeff (float, optional) – Constant coefficient applied to resulting dt before resolving min and max values. Defaults to 1.

  • kwds (dict) – Base class arguments.

apply(**kwds)

Abstract method that should be implemented. Applies this node (operator, computational graph operator…).

abstract compute_criteria(**kwds)[source]
classmethod supports_mpi()[source]

Return True if this operator was implemented to support multiple mpi processes.